home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-04
/
vol11n06.zip
/
CLRPRI.BAS
< prev
next >
Wrap
BASIC Source File
|
1991-03-28
|
2KB
|
43 lines
'CLRPRINT.BAS - graphics printing routine accepts a background color
'$INCLUDE: 'QB.BI' 'this defines the RegTypeX TYPE variable
DECLARE SUB ColorPrint (text$, row%, col%, fc%, bc%)
DIM SHARED Registers AS RegTypeX
SCREEN 9
FOR i = 9 TO 210 STEP 10 'draw ellipses to show it's graphics mode
Clr = Clr + 1
CIRCLE (310, i), i, Clr MOD 16, , , .6
NEXT
CALL ColorPrint(" ColorPrint - Microsoft QuickBasic ", 3, 23, 4, 7)
CALL ColorPrint(" Graphics text with a background color! ", 5, 20, 7, 1)
FOR bc% = 0 TO 15 'display all possible color combinations
FOR fc% = 0 TO 15
CALL ColorPrint(HEX$(fc%), 8 + bc%, 32 + fc%, fc%, bc%)
NEXT
NEXT
SUB ColorPrint (text$, row%, col%, fc%, bc%) STATIC
c$ = STRING$(LEN(text$), 219) 'create a string of solid characters
Registers.ax = &H1300 'video service 13h, subfunction 0
Registers.bx = bc% 'BH = page (0), BL = color
Registers.cx = LEN(text$) 'CX = string length
Registers.dx = 256 * (row% - 1) + (col% - 1) 'DH = row, DL = column
Registers.es = VARSEG(c$) 'ES = string data segment
Registers.bp = SADD(c$) 'BP = string address
CALL InterruptX(&H10, Registers, Registers) 'call the BIOS to print it
Registers.bx = (fc% XOR bc%) + &H80 'BL = color, +&H80 means use XOR
Registers.es = VARSEG(text$) 'ES = string data segment
Registers.bp = SADD(text$) 'BP is the string address
CALL InterruptX(&H10, Registers, Registers) 'call the BIOS
END SUB